1. Field
The present disclosure relates to a method and apparatus for providing intelligent congestion feedback during a preset time period. More specifically, an apparatus and a method include a timer per destination endpoint timing a preset time period during which a feedback loop is turned-on upon detection of congestion.
2. Description of Related Art
Network congestion generally refers to overloading the resources of a network, such as routers and switches, with packets that need to be handled. When network congestion occurs, packets are dropped by an overloaded resource and have to be retransmitted. Numerous methods and proposals for avoiding network congestion are known, but each has its own drawbacks with respect to issues such as fairness, (e.g., which packets get dropped), enforcement, practical implementation difficulties, and so forth.
For example, in the Transmission Control Protocol (TCP), network congestion is controlled via various phases and techniques, including a congestion avoidance phase. TCP controls a transmit rate by a congestion window that determines the maximum amount of data that may be in transit at any time, wherein a congestion window's worth of data is transmitted every round-trip time. In the absence of congestion, TCP increases its congestion window by one packet each round-trip time. To avoid congestion, if the network drops any packets, TCP halves its congestion window. However, detecting congestion through packet loss, typically as a result of overflow in a router's output queue, has a number of drawbacks including that this method is reactive rather than proactive, as by the time the (often substantial) router buffers are filled up and packets start to get dropped, the network is seriously overloaded. Consequently, the “normal” operating state of the network is to have substantial queuing delays in each router during periods of congestion. Moreover, only those flows whose packets are dropped are aware of the congestion, which is why TCP needs to back off aggressively and halve the congestion window. The dropped packets are not necessarily from the source that initially caused the congestion.
A proposed improvement to TCP/IP, known as Explicit Congestion Notification (ECN), would mark the packets instead of actually dropping them. The mark is returned to the source, whereby the source may slow down its rate of transmission. However, to implement an ECN scheme, significant complexity is added at the TCP level to ensure that at least one congestion mark on a packet in a round-trip time's worth of packets has the same effect as a packet loss on the congestion window. ECN has a number of drawbacks including that complexity is added throughout the network, ECN only works with modified TCP code, and ECN is particularly difficult to enforce, e.g., an uncooperative source can simply ignore the notification to get more than its fair share of network resources.
When supporting ECN, typically a feedback loop between source and destination endpoints is piggybacked on TCP ACK packets traveling in an opposite direction back to the source endpoint. This steady feedback of network state information is crucial for the responsiveness of a control loop.
Also, when supporting ECN, the destination endpoint continuously sends, via a feedback loop, ACK packets back to the source endpoint to acknowledge receipt of the data packets transmitted. That is, the ACK packets are used for reliable data transfer. In the network, the ACK packet is associated with every packet as a constant feedback. However, the ACK packets do consume a significant amount of bandwidth.
Accordingly, an apparatus and method are needed for systems that do not make use of TCP that would enable congestion detection without requiring that a stream of ACK packets be sent end to end across the network at all times, that is from the destination to the source endpoints. Accordingly, an apparatus and method are needed that would provide a predictable and configurable stream of feedback information to the source endpoints so that the feedback loop is responsive and so that the network converges to a good operating point quickly.